/*

	Camera.h
	
	Camera class for applying standard look-at
	transformations to an entire 3D scene.
	
	Written by Sigurd Suhm 2009

*/

#ifndef _CAMERA_H
#define _CAMERA_H

// Includes
#include "Vector.h"		// Vector types

namespace EraAstral
{
	namespace graphics
	{
		// Camera class
		class Camera
		{
			private:
				// Camera position
				Vector3		*m_position;
				// Camera target position
				Vector3		*m_target;
			
			public:
				// Default constructor
				Camera();
				// Default destructor
				~Camera();
				
				// Applies camera transforms to the current scene
				void ApplyTransforms();
				
				// Accessors
				Vector3		*GetPosition() const;
				void		SetPosition(const Vector3& position);
				Vector3		*GetTarget() const;
				void		SetTarget(const Vector3& target);
		};
	}
}

#endif		// _CAMERA_H